package annotationAndReflection;

import java.io.FileReader;
import java.lang.reflect.Method;
import java.util.Properties;

/**
 * @author mubei
 * @date 2021/11/25
 * @description
 */
@SuppressWarnings("all")
public class TestReflection {

    public static void main(String[] args) throws Exception {

        //1.加载配置文件
        Properties properties = new Properties();
        properties.load(new FileReader("src/main/java/annotationAndReflection/re.properties"));

        // 2.获取类的元素
        String classfullpath = properties.get("classfullpath").toString();
        String method = properties.get("method").toString();

        // 3.反射创建对象
        /*
        * 1.加载类 返回Class类型的对象Class
        * 2.通过catClass加载对象实例
        * */
        Class catClass = Class.forName(classfullpath);
        Object o = catClass.newInstance();
        // 返回运行时类型
        System.out.println(o.getClass());
        Cat cat = (Cat)catClass.newInstance();

        // 4. 根据catClass 获取方法   方法视为对象
        Method hi = catClass.getMethod(method);

        //5 通过method对象调用方法   method.invoke(对象)
        hi.invoke(o);
    }
}
